package models

import (
	"github.com/guregu/null"
	"gorm.io/gorm"
)

type Comment struct {
	gorm.Model
	Id             int    `gorm:"column:id" json:"id"`
	Type           int    `gorm:"column:type" json:"type"`
	TypeId         int    `gorm:"column:type_id" json:"typeId"`
	ParentId       int    `gorm:"column:parent_id" json:"parentId"`
	ReplyId        int    `gorm:"column:reply_id" json:"replyId"`
	CommentContent string `gorm:"column:comment_content" json:"commentContent"`
	CommentUserId  int    `gorm:"column:comment_user_id" json:"commentUserId"`
	ReplyUserId    int    `gorm:"column:reply_user_id" json:"replyUserId"`
	IsCheck        int    `gorm:"column:is_check;default:1" json:"isCheck"`
}
type UserCommentDto struct {
	Type           int    `json:"type"`
	TypeId         int    `json:"typeId"`
	ParentId       int    `json:"parentId"`
	ReplyId        int    `json:"replyId"`
	CommentContent string `json:"commentContent"`
	ReplyUserId    int    `json:"replyUserId"`
}
type ArticleCommentVo struct {
	gorm.Model
	Id                  int                `gorm:"column:id" json:"id"`
	Type                int                `gorm:"column:type" json:"commentType"`
	TypeId              int                `gorm:"column:type_id" json:"typeId"`
	ParentId            int                `gorm:"column:parent_id" json:"parentId"`
	ReplyId             int                `gorm:"column:reply_id" json:"replyId"`
	CommentContent      string             `gorm:"column:comment_content" json:"commentContent"`
	CommentUserId       int                `gorm:"column:comment_user_id" json:"commentUserId"`
	ReplyUserId         int                `gorm:"column:reply_user_id" json:"replyUserId"`
	CreateTime          MyTime             `gorm:"column:created_at" json:"createTime"`
	CommentUserNickname string             `gorm:"column:user_nickname" json:"commentUserNickname"`
	CommentUserAvatar   string             `gorm:"column:user_avatar" json:"commentUserAvatar"`
	ReplyUserNickname   string             `gorm:"column:reply_user_nickname" json:"replyUserNickname"`
	LikeCount           int                `gorm:"-" json:"likeCount"`
	ChildCommentCount   int                `gorm:"-" json:"childCommentCount"`
	ParentCommentCount  int                `gorm:"-" json:"parentCommentCount"`
	ChildComment        []ArticleCommentVo `gorm:"-" json:"childComment"`
}
type CommentListVo struct {
	gorm.Model
	Id              int    `gorm:"column:id" json:"id"`
	Type            int    `gorm:"column:type" json:"type"`
	TypeId          int    `gorm:"column:type_id" json:"typeId"`
	ParentId        int    `gorm:"column:parent_id" json:"parentId"`
	ReplyId         int    `gorm:"column:reply_id" json:"replyId"`
	CommentContent  string `gorm:"column:comment_content" json:"commentContent"`
	CommentUserName string `gorm:"column:comment_username" json:"commentUserName"`
	IsCheck         int    `gorm:"column:is_check" json:"isCheck"`
	CreateTime      MyTime `gorm:"column:created_at" json:"createTime"`
	UpdateTime      MyTime `gorm:"column:updated_at" json:"updateTime"`
}
type SearchCommentDto struct {
	CommentUserName string   `gorm:"column:comment_username" json:"commentUserName"`
	CommentContent  string   `gorm:"column:comment_content" json:"commentContent"`
	Type            null.Int `gorm:"column:type" json:"type"`
	IsCheck         null.Int `gorm:"column:is_check" json:"isCheck"`
}
type CommentIsCheckDto struct {
	gorm.Model
	Id      int `gorm:"column:id" json:"id"`
	IsCheck int `gorm:"column:is_check" json:"isCheck"`
}

func (table *Comment) TableName() string {
	return "t_comment"
}
func (table *ArticleCommentVo) TableName() string {
	return "t_comment"
}
func (table *CommentListVo) TableName() string {
	return "t_comment"
}
func (table *CommentIsCheckDto) TableName() string {
	return "t_comment"
}
